

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<script type="text/javascript" src="helpman_topicinit.js"></script>

<title>Code Engineering [Enterprise Architect User Guide]</title>

<meta name="keywords" content="Enterprise Architect, Sparx Systems, UML, Code Engineering,Code Engineering Introduction,Reverse Engineering,Reverse Engineering Introduction,Synchronization,Synchronization Introduction,Round-Trip Engineering,Round-Trip Engineering Introduction,Forward Engineering,Forward Engineering Introduction,Introduction,Introduction To Code Engineering,Introduction To Reverse Engineering,Introduction To Synchronization,Introduction To Round-trip Engineering,Introduction To Forward Engineering">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<link type="text/css" href="default.css" rel="stylesheet" />
<style type="text/css">
  A, A:Visited
  {
    color: #00F;
  }

  A:Active, A:Hover
  {
    color: #F00;
  }

  OL
  {
    margin: 5px 0 5px 48px;
  }

  UL
  {
    margin-bottom: 3px;
    margin-top: 0;
  }

  #nsr
  {
    background-color: #D4DFFF;
  }

  #nsr A
  {
    text-decoration: none;
  }

  #mainbody
  {
    padding: 8px;
  }

  .p_BodyText
  {
    padding: 5px 0;
  }
</style>



<style type="text/css" media="screen">
  BODY
  {
    background-color: #FFFFFF;
  }

  #nsr
  {
    padding: 6px 6px 0 6px;
    border-bottom: none;
    vertical-align: top;
    z-index: 2;
    visibility: visible;
    left: 0;
    top: 0;
    position: absolute;
  }

  #mainbody
  {
    left: 0;
    top: 0;
    margin: 0;
    position: absolute;
    padding: 10px;
    overflow: auto;
    height: 100%;
    z-index: 1;
    background-repeat: no-repeat;
    background-position: bottom right;
    background-attachment: fixed;
  }
</style>

<style type="text/css" media="print">
  #nsr
  {
    visibility: none;
  }

  #mainbody
  {
    overflow: visible;
  }
</style>
<script type="text/javascript" language="JavaScript" src="nonscroll.js"></script>

</head>
<body scroll="no">

<div id="page">



        <div id="content">
          <div id="content-inner">
          



  
          <div id="nsr">
            <table border="0" cellspacing="0" cellpadding="4" width="100%">
              <tr valign="top">
                <td align="left">
  


                  <p class="p_Heading1"><span class="f_Heading1">Code Engineering</span></p>



  
                </td>
                <td align="right">
                  <a href="introduction.htm" onmouseover="document.images.main.src='button_main_h.gif'" onmouseout="document.images.main.src='button_main.gif'">
                    <img name="main" src="button_main.gif" border=0 alt="Return to Introduction">
                  </a>&nbsp;
    
                  <a href="managebookmarks.htm" onmouseover="document.images.prev.src='button_prev_h.gif'" onmouseout="document.images.prev.src='button_prev.gif'">
                    <img name=prev src="button_prev.gif" border=0 alt="Previous page" />
                  </a>&nbsp;
    
    
    
                  <a href="reverseengineersourcecode.htm" onmouseover="document.images.next.src='button_next_h.gif'" onmouseout="document.images.next.src='button_next.gif'">
                    <img name=next src="button_next.gif" border=0 alt="Next page" />
                  </a>
    
    
                </td>
              </tr>
            </table>
          </div>
          <div id="mainbody">
  


                <p class="p_TextIndentedL1"><img src="code_engineering.png" width="246" height="100" border="0" alt="code_engineering"></p>
<p class="p_BodyText"><span class="f_BodyText">Code Engineering is a process that includes </span><span class="f_BodyText" style="font-weight: bold;">automated code generation</span><span class="f_BodyText">, </span><span class="f_BodyText" style="font-weight: bold;">reverse engineering</span><span class="f_BodyText"> of source code and </span><span class="f_BodyText" style="font-weight: bold;">synchronization</span><span class="f_BodyText"> between the source code and model.</span></p>
<p class="p_BodyText"><span class="f_BodyText">Enterprise Architect also enables you to rapidly model, generate - or </span><span class="f_BodyText" style="font-style: italic;">forward engineer -</span><span class="f_BodyText"> and reverse engineer:</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1"><a href="xml_technologies.htm">XML Technologies</a>, namely XML Schema (XSD) and Web Service Definition Language (WSDL)</span></li>
<li><span class="f_Bulletlist1"><a href="datamodelling2.htm">Database schema</a>, keys, triggers, constraints, RI and other relational database features, for and from a range of database products.</span></li>
</ul>
<p class="p_BodyText"><span class="f_BodyText">Code Engineering is available in the Professional, </span><span class="f_BodyText">Corporate, Business and Software Engineering, System Engineering and Ultimate editions</span><span class="f_BodyText"> of Enterprise Architect.</span></p>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">Code Generation</span></p>
<p class="p_BodyText"><span class="f_BodyText">Enterprise Architect enables you to <a href="generatesourcecode.htm">generate source code</a> from UML model elements, creating a source code equivalent of the Class or Interface element for future elaboration and compilation. In particular you can generate <a href="languageoptions.htm">C, C++, C#, Delphi, Java, PHP, Python, ActionScript, Visual Basic and VB.NET</a> source code. The source code generated includes Class definitions, variables and function stubs for each attribute and method in the UML Class. You can use the </span><span class="f_BodyText" style="font-style: italic;"><a href="thesourcecodeviewer.htm">Source Code Viewer</a></span><span class="f_BodyText"> to view any source code you are opening.</span></p>
<p class="p_BodyText"><span class="f_BodyText">You can also generate code from three UML <a href="code_generation_from_behaviora.htm">behavioral modeling</a> paradigms:</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1">State Machine diagrams</span></li>
<li><span class="f_Bulletlist1">Interaction diagrams</span></li>
<li><span class="f_Bulletlist1">Activity diagrams.</span></li>
</ul>
<p class="p_BodyText"><span class="f_BodyText">The </span><span class="f_BodyText" style="font-style: italic;"><a href="codetemplates.htm">Code Template Framework (CTF)</a> </span><span class="f_BodyText">enables you to customize the way Enterprise Architect generates source code. It also enables you to generate languages that Enterprise Architect does not specifically support, by helping you define the appropriate code generation templates for that language (this is discussed in </span><span class="f_BodyText" style="font-style: italic;"><a href="introduction_2.htm">SDK for Enterprise Architect)</a></span><span class="f_BodyText">.</span></p>
<p class="p_BodyText"><span class="f_BodyText">You can link the facilities of Enterprise Architect to other development environments. The <a href="mdglinkandcodeengineering.htm">MDG Link for Eclipse and MDG Link for Visual Studio.NET</a> are standalone products that provide an enhanced code engineering functionality between Enterprise Architect and the development environments.</span></p>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">Reverse Engineering</span></p>
<p class="p_BodyText"><span class="f_BodyText" style="font-style: italic;"><a href="reverseengineersourcecode.htm">Reverse Engineering</a></span><span class="f_BodyText"> is the import of existing source code into model elements, mapping the source code structures onto their UML representations. This enables you to examine legacy code and the functionality of code libraries for reuse, or to bring the UML model up to date with the code. You can reverse engineer in the same languages as you perform code generation with Enterprise Architect.</span></p>
<p class="p_BodyText"><span class="f_BodyText">Enterprise Architect is also able to reverse engineer binary files, namely Java .jar files and .NET PE files.</span></p>
<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 5px 0px 5px 13px;"><table cellspacing="0" cellpadding="2" border="0" style="border: none; border-spacing:0px;">
<tr style="text-align:left;vertical-align:bottom;">
<td valign="bottom" width="952" bgcolor="#efeff7" style="width:952px; background-color:#efeff7;"><p class="p_TiporNote" style="border-top: none; border-right: none; border-left: none;"><span class="f_TiporNote">Note:</span></p>
</td>
</tr>
<tr style="text-align:left;">
<td width="952" bgcolor="#f7f7ff" style="width:952px; background-color:#f7f7ff;"><p class="p_TiporNoteText"><span class="f_TiporNoteText">Reverse Engineering of other languages including CORBA IDL is also currently available through the use of the MDG Technologies. See <a href="http://www.sparxsystems.com/resources/mdg_tech/" target="_blank" class="weblink">www.sparxsystems.com/resources/mdg_tech/</a>.</span></p>
</td>
</tr>
</table>
</div>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">Synchronization</span></p>
<p class="p_BodyText"><span class="f_BodyText" style="font-style: italic;"><a href="cgo_synchcode.htm">Synchronization</a></span><span class="f_BodyText"> is when changes in the model are exported to the source code and changes to source code are imported into the model. This enables you to keep your model and source up to date as the project develops.</span></p>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">Round-Trip Engineering</span></p>
<p class="p_BodyText"><span class="f_BodyText" style="font-style: italic;">Round trip engineering</span><span class="f_BodyText"> is a combination of reverse and forward generation of code and includes synchronization between the source code and the model in all but the most trivial of code engineering projects. In order to get the most out of round trip engineering in Enterprise Architect, you should be familiar with the <a href="modeling_conventions.htm">modeling conventions</a> used when generating and reverse engineering the languages you use.</span></p>




            </div>
          </div>
        </div>



</div>


</body>
</html>
